//永恒摸鱼日历
import plugin from '../../../lib/plugins/plugin.js';
import common from '../../../lib/common/common.js'
import fetch from 'node-fetch'
import schedule from 'node-schedule'

// 定时发送时间，采用 Cron 表达式，当前默认为每日 7:56 分推送
const TIME = '0 56 7 * * ?'

// 指定定时发送的群号
const GROUP_LIST = ['1234567']

// 是否开启定时推送，默认为false. true（开启），false（关闭）
const IS_AUTO_PUSH = false

autoTask()

export class Example extends plugin {
  constructor() {
    super({
      name: '摸鱼日历',
      dsc: '获取摸鱼日历',
      event: 'message',
      priority: 5000,
      rule: [
        {
          reg: /^#摸鱼日历$/,
          fnc: 'news'
        }
      ]
    })
  }

  async news(e) {
    pushNews(e)
  }
}

/**
 * 推送日历
 * @param e oicq传递的事件参数e
 */
async function pushNews(e, isAuto = false) {
  // 记录用户的命令消息
  if (e.msg) {
    logger.info('[用户命令]', e.msg)
  }

  // 请求摸鱼人日历接口
  const response = await fetch('https://api.vvhan.com/api/moyu?type=json').catch(err => logger.error(err))
  const json = await response.json()
  const imageUrl = json.url

  // 判断接口请求是否成功
  if (!imageUrl) {
    logger.error('[摸鱼人日历] 接口请求失败')
  }

  // 回复消息
  if (isAuto) {
    e.sendMsg(segment.image(imageUrl))
  } else {
    e.reply(segment.image(imageUrl))
  }
}

/**
 * 定时任务
 */
function autoTask() {
  if (IS_AUTO_PUSH) {
    schedule.scheduleJob(TIME, () => {
      logger.info('[摸鱼人日历]：开始自动推送...')
      GROUP_LIST.forEach(groupId => {
        const group = Bot.pickGroup(groupId)
        pushNews(group, true)
        common.sleep(1000)
      })
    })
  }
}
